import math
import random


# 1.读心术小游戏
def test1():
    # 所有可能的图案
    list = ['😀', '😂', '🤣', '😊', '😎', '😍', '👍', '🔥', '🎉', '🌟',
            '😢', '😡', '🤔', '👏', '💥', '💯', '🍕', '🍔', '🚗', '✈️',
            '🍀', '🌈', '🌞', '🌍', '💡', '🎶', '🎁', '🎈', '🧸', '🎮']
    # 决定9的倍数的图案
    # ans = random.choice(list)#获取集合中的一个随机元素
    #
    i = random.randint(0, len(list) - 1)
    ans = list[i]
    # 1-100打印的同时，绘制图案
    for i in range(1, 101):
        # 打印图案
        if i % 9 == 0:
            # 固定9的倍数的图案
            print(f"{i}:{ans}", end=" ")
        else:
            # 随机获取一个索引，输出每个数字之后的图案
            idx = random.randint(0, len(list) - 1)
            print(f"{i}:{list[idx]}", end=" ")
        # 每隔10个换行
        if i % 10 == 0:
            print()

    input("请按下回车键继续")
    print(f"您心中的图案是{ans}")


# 2.读取json文件，保存其中的姓名，随机点名
import json


def test2():
    # 绝对路径。注意路径中的\需要转义，使用\\
    # file_path = "D:\\hqyj\\ai_class\\cq_ai_250701\\python核心\\python基础\\my_directory\\user_map.json"
    # 相对路径。   /进入某个目录   ../退出当前目录   ./当前目录
    file_path = "../../python基础/my_directory/user_map.json"
    with open(file_path, "r", encoding="utf-8") as file:
        data = json.load(file)
    list = []
    for user in data.values():
        list.append(user['username'])
    # 随机一个元素
    # 1.随机一个索引，根据索引获取
    # idx = random.randint(0, len(list) - 1)
    # name = list[idx]
    # 2.random.choice()随机一个元素
    # name = random.choice(list)
    # 3.使用shuffle和pop实现抽奖效果(随机一个后删除)
    random.shuffle(list)
    name = list.pop()
    print(name)


# 3.斐波那契数列
def test3(n):
    # 1.使用通项公式实现
    # return math.floor((((math.sqrt(5) + 1) / 2) ** n - (1 - (math.sqrt(5)) / 2) ** n) / math.sqrt(5))
    # for i in range(2, 11):
    #     print(test3(i))
    # 2.使用递归实现。递归：函数调用自身。值比较大时，效率低。
    if n < 3:
        return 1
    else:
        return test3(n - 1) + test3(n - 2)

